import { guid } from './guid'
const param = {
  event_env: import.meta.env.PROD ? 'prod' : 'test', // 数据上报环境，prod=生产环境，test=测试环境
  proj_id: '027_1577', // 项目id，必传，集团未来埋点平台申请
  show_log: false, // 是否开启日志打印，默认关闭
  auto_track: false, // 是否开启全埋点，默认关闭
  collect_tags: {}, // 是否开启其他任意元素的全埋点采集（默认不采集），详见全埋点说明模块
  source: '8', // 来源，必传，取值逻辑参考(1=android手机端/2=ios手机端/3=app内嵌h5/4=小程序内嵌h5/5=微信app内游离h5(非小程序)/6=服务器后端/7=QQapp内游离h5/8=Web端/9=ipad端/10=安卓pad/11=小程序原生/12=授课端/13=新辅导端/14=老辅导端/100=其它)
  saas: true, // 是否埋点上传地址是saas部署的域名，传true为saas上传的域名地址，不传或者传false为培优埋点地址,默认值为false
}
type Param = typeof param
const xwLog = new window.XesAnalytics(param)
xwLog.registerPage({
  xwx_uuid: guid(),
})
export default xwLog

type IXesAnalyticsConstrutor<T> = new (param: Param) => T

interface IXesAnalytics {
  /** 注册page页面xwx_uuid生成的uuid */
  registerPage: (param: { xwx_uuid: string }) => void
  /** 设置头 user_id 用户id */
  setProfile: (param: { user_id: string }) => void
  /** 页面点击埋点，paramID参数id */
  view: (paramID: string, obj: { [str: string]: any }) => void
  /** 页面点击埋点，paramID参数id */
  track: (paramID: string, obj: { [str: string]: any }) => void
}

//type aa = ConstructorParameters<IXesAnalyticsConstrutor<IXesAnalytics>>
declare global {
  interface Window {
    XesAnalytics: IXesAnalyticsConstrutor<IXesAnalytics>
  }
}
